// 导入React Redux的核心hooks
import { useDispatch, useSelector } from 'react-redux';
// 导入类型化的selector hook类型
import type { TypedUseSelectorHook } from 'react-redux';
// 导入应用的类型定义
import type { RootState, AppDispatch } from './index';

/**
 * 类型化的dispatch hook
 * 
 * 功能：提供类型安全的dispatch函数
 * 
 * 优势：
 * - 提供完整的TypeScript类型支持
 * - 在dispatch action时提供类型检查
 * - 避免类型错误和运行时错误
 * 
 * @returns {AppDispatch} 返回类型化的dispatch函数
 * 
 * @example
 * ```typescript
 * const dispatch = useAppDispatch();
 * dispatch(login({ id: '1', name: '张三', isLoggedIn: true }));
 * ```
 */
export const useAppDispatch = () => useDispatch<AppDispatch>();

/**
 * 类型化的selector hook
 * 
 * 功能：提供类型安全的selector函数
 * 
 * 优势：
 * - 提供完整的TypeScript类型支持
 * - 在访问state时提供类型检查
 * - 自动推断返回值的类型
 * - 提供更好的IDE支持和代码提示
 * 
 * @returns {TypedUseSelectorHook<RootState>} 返回类型化的selector函数
 * 
 * @example
 * ```typescript
 * const userInfo = useAppSelector(state => state.user.userInfo);
 * const isLoggedIn = useAppSelector(state => state.user.userInfo.isLoggedIn);
 * ```
 */
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector; 